#!/bin/bash

# =============== 安装必需的参数 ===============
home_dir="{[{InstallDir}]}"
rootdir=`pwd`
filename="{[{FileName}]}"
installFile="$rootdir/download/$filename"
wgeturl="-P $rootdir/download {[{sourceURL}]}/$filename"
install_log="$rootdir/tomcat_install.log"

function getVersion(){
    InstallVersion=`echo $filename | sed 's/\(.*.omcat.*\).tar.gz/\1/g'`
}
# =============== 到这里结束 ===============

# =============== init.d参数 ===============
init_name="tomcat"
initsh="$rootdir/res/${init_name}_init.sh"
pidfile="$home_dir/tomcat/bin/tomcat.pid"
confdir="$home_dir/tomcat/conf/server.xml"
startup="$home_dir/tomcat/bin/startup.sh"
shutdown="$home_dir/tomcat/bin/shutdown.sh"


helplist="= = = = = = = = = 帮助 = = = = = = = = =
 -f/--file          指定源tar文件(默认为$installFile)
 -h/--help          帮助文档
 --init             仅生成init.d脚本
 install/--install  安装$InstallVersion并生成/etc/init.d/$init_name
 --optestinstall      用于OpManager测试安装(并非真实安装，只是生成了校验文件)"

Params=$@

# 捕捉Ctrl+C
trap 'onCtrlC' INT

function onCtrlC (){
    echo 用户退出脚本,日志记录:$install_log
    exitscripts 20
}

source res/echo_log.sh
source res/optest.sh

function exitscripts(){
    case $1 in
        1)
            echo -e "\033[41;37m下载失败\033[0m" 
            echo_log 3 "$wgeturl 下载失败"
            exit $1
        ;;
        3)
            echo -e "yum安装失败" 
            echo_log 3 "yum安装失败"
            exit $1
        ;;
        4)
            echo -e "解压失败" 
            echo_log 3 "解压失败"
            exit $1
        ;;
        5)
            echo -e "$initsh文件不存在" 
            echo_log 3 "$initsh文件不存在"
            exit $1
        ;;
        6)
            echo -e "\033[41;37m文件复制失败\033[0m" 
            echo_log 3 "文件复制失败"
            exit $1
        ;;
        7)
            echo -e "无有效参数被指定，请参考帮助：\n$helplist"
            exit $1
        ;;
        20)
            echo -e "\n\n==========退出脚本：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
            echo_log 3 "用户退出脚本"
            exit $1
        ;;
        *) echo "[error code: \$1 ]"
        ;;
    esac
}

# 检查文件是否存在
function fileexist()
{
    if [ ! -e $1 ];then
        echo -e "\033[43;37m 文件 $1 不存在，开始下载:$wgeturl \033[0m"
    echo_log 3 "文件 $1 不存在，开始下载:$wgeturl"
        rpm -q wget
        wgetres=$?
    else
        return 0
    fi
    if [ $wgetres -ne 0 ];then
        yum -y install wget && exitscripts 3
        echo 安装wget完成
        echo_log 1 安装wget完成
    fi
    wget $wgeturl || exitscripts 1
    echo -e "\n\n==========重新开始脚本：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
    AllParams $Params
}

# 解压文件
function unarchive(){
    getVersion
    if [ ! -d tomcat ];then
        tar -zxf $installFile || exitscripts 4
        mv $InstallVersion tomcat && echo  -e "\033[42;37m解压完成\033[0m" && echo_log 1 解压完成
    else
        echo -e "\033[44;37mtomcat目录已存在，跳过解压\033[0m"
        echo_log 0 tomcat目录已存在，跳过解压
    fi
    cp -a tomcat $home_dir
    if [ $? -eq 0 ] 
    then
        echo -e "\033[42;37m复制文件完成\033[0m"
        echo_log 1 复制文件完成
    else
        exitscripts 6
    fi
}


# ======================= 下面是生成init.d的函数 =======================
source $initsh || exitscripts 5
function init_scripts(){
    echo -e "==========生成init.d脚本：$(date "+%Y-%m-%d %H:%M:%S")==========\n\n" >> $install_log
    echofile
    echo_log 1 "生成init.d脚本：init_$init_name"
    chmod +x init_$init_name
    echo_log 1 "给予可执行权限：init_$init_name"
    cp init_$init_name /etc/init.d/$init_name
    echo_log 1 "复制至：/etc/init.d/$init_name"
    echo -e "\033[42;37m生成结束：/etc/init.d/$init_name\033[0m"
    echo -e "\n\n==========生成结束：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
    exit 0
}
# ======================= 上面是生成init.d的函数 =======================

# 参数指定
function AllParams(){
    i=0
    for param in $@
    do
        params[$i]="$param"
        ((i++))
    done
    if [ ${#params[@]} -eq 0 ] 
    then
        exitscripts 7
    fi
    # 将参数都遍历一次，判断是否有其他参数
    i=0
    while [ $i -lt ${#params[@]} ]
    do
        case ${params[i]} in
            -f|--file)
                installFile="${params[i+1]}"
                echo_log 0  参数：installFile=$installFile
                ((i++))
            ;;
            -h|--help)
                echo -e "$helplist" && exit 0
            ;;
            --init)
                init_scripts
            ;;
            install|--install)
                startinstall
            ;;
            --mysql)
                ToMysql
            ;;
            --optestinstall)
                optest {[{InstallDir}]}/Installed/tomcat
            ;;
            *)
            ;;
        esac
        ((i++))
    done
}

# ========================== 安装开始 ==========================
startinstall(){
    echo -e "==========开始脚本：$(date "+%Y-%m-%d %H:%M:%S")==========\n\n" >> $install_log
    getVersion
    echo_log 0 版本：$InstallVersion

    echo -e "\033[44;37m版本为：$InstallVersion\033[0m"
    fileexist $installFile
    unarchive
    echo "日志记录:$install_log"
    echo -e "\n\n==========安装结束：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
    init_scripts
}
AllParams $Params
# ========================== 安装结束 ==========================



